wayland: Constrain the window configure requests to the window's geometry
authorRob Bradford <rob@linux.intel.com>
Mon, 9 Jan 2012 17:15:00 +0000 (17:15 +0000)
committerRob Bradford <rob@linux.intel.com>
Mon, 9 Jan 2012 17:19:34 +0000 (17:19 +0000)
When we receive a configure event from Wayland telling us to resize our
surface we check against the geometry constraints for the window to ensure we
do not resize below the minimum and maximum limits.

gdk/wayland/gdkwindow-wayland.c

index 6a43e5f7fa2e9de80c43d382c237d6e81ee14539..cffc4f5c7db852529d0df01eedac242938643e9f 100644 (file)
@@ -484,11 +484,22 @@ shell_surface_handle_configure(void *data,
                                int32_t height)
 {
   GdkWindow *window = GDK_WINDOW (data);
+  GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
   GdkDisplay *display;
   GdkEvent *event;
 
   display = gdk_window_get_display (window);
 
+  gdk_window_constrain_size (&impl->geometry_hints,
+                             impl->geometry_mask,
+                             width,
+                             height,
+                             &width,
+                             &height);
+
+  /* TODO: Only generate a configure event if width or height have actually
+   * changed?
+   */
   event = gdk_event_new (GDK_CONFIGURE);
   event->configure.window = window;
   event->configure.send_event = FALSE;